/*
 * UIPFinder.cuh
 *
 *  Created on: Dec 12, 2013
 *      Author: jaime
 */

#ifndef UIPFINDER_CUH_
#define UIPFINDER_CUH_
#include "../CUDAListGraph.cuh"
#include "../../Utils/GPUStaticVec.cuh"

class UIPFinder {
private:
	CUDAListGraph * impl_graph;
	int number_of_variables;
	GPUStaticVec<Var, 200> var_in_paths;

	__device__ void paths_to_decision(Decision target_decision, Var current_var,
			GPUStaticVec<Var, 200> * current_path, bool * first_path);

public:
	__device__ UIPFinder(CUDAListGraph * impl_graph, int number_of_variables);
	__device__ Var first_uip(Decision target_decision);
};

#endif /* UIPFINDER_CUH_ */
